
angular.module('smartOlwApp').controller('departamentoCtrl', function($scope,ngDialog,smartOlwServices){
      
	//Si lo quiere manejar asi... entonces no seria necesario el #messageBox...
	$scope.titulo_mensajes = "Información!";
	$scope.descripcion_mensajes  = "En esta vista puede administrar el maestro de departamentos";
	var divMessages  = document.querySelector('#messageBox');
	divMessages.className = "alert alert-info alert-dismissable";
	$scope.lista = {departamento: []};
	$scope.paises = [];
	$scope.departamento = {
		scpais : null
	};
	$scope.departamentos = [];
	
	//se inicia la vista con la carga de paises

	
	/*
	$scope.showModal = function() {
		var dialog 	 = ngDialog.open({
			template: '<div>'+
				      '   <p>En esta vista, puede crear nuevos departamentos, teniendo en cuenta los siguientes aspectos:</p>' +
					  '   <p>' + 
					  '     <ul style="list-style-type:circle;margin-left:10px;">'  +
					  '        <li>Los campos con signo *, son obligatorios, se deben diligenciar.</li>' +
					  '     </ul>' +
					  '   </p>' + 
					  '</div>'+
				      '<div class="ngdialog-buttons">'+
				      '<button type="button" class="ngdialog-button ngdialog-button-primary" ng-click="closeThisDialog(1)">Cerrar</button>' +
				      '</div>',
		    className: 'ngdialog-theme-default',
			plain: true
		});
		dialog.closePromise.then(function (data) {
			console.log('ngDialog closed' + (data.value === 1 ? ' using the button' : '') + ' and notified by promise: ' + data.id);
		});
	};
	
	$scope.filterValue = function($event){
        if(isNaN(String.fromCharCode($event.keyCode))){
            $event.preventDefault();
        }
	};
	

	
	$scope.consultar = function(departamento){
		var argumentos = arguments;
		try{
			var exito = function(respuesta){
				try{
					var mensaje			= (argumentos.length > 1)?argumentos[1]:"Se realizó la consulta con exito";
					var objeto			= respuesta.data;
					$scope.departamentos = angular.fromJson(objeto);
					$scope.titulo_mensajes = "Sucesos!";
					$scope.descripcion_mensajes  = ($scope.departamentos.length > 0)?mensaje:"No hubo resultados";
					var tipo			= ($scope.departamentos.length > 0)?"success":"success";
					divMessages.className = "alert alert-"+tipo+" alert-dismissable";
				}catch(e){
					console.log(e.message);
				}
			}

			var error = function(respuesta){
				$scope.titulo_mensajes 			= "Error!";
				$scope.descripcion_mensajes  	= "Se produjo un error al momento de consultar la información de paises";
				divMessages.className 			= "alert alert-danger alert-dismissable";
				console.log(angular.toJson(respuesta));
			}
			
			var backuppais				= departamento.scpais;
			var inpais 					= $scope.buscarPais(departamento.scpais);
			if(departamento.scpais != null) {
				departamento.scpais 		= $scope.paises[inpais];
			}
		    
			smartOlwServices.sendPost(
				angular.toJson(departamento),
				hostSmart+context+endPointDepartamento+methodGetDepartamento,exito,error
			);
			departamento.scpais 		= backuppais;
		}catch(e){
			$scope.titulo_mensajes = "Error!";
			$scope.descripcion_mensajes  = "Se produjo un error al momento de consultar la información de departamentos";
			divMessages.className = "alert alert-danger alert-dismissable";
		}
	}
	
	$scope.buscarPais = function(codigo) {
		var posicion = -1;
		for(var index= 0; index < $scope.paises.length; index++) {
			if(codigo == $scope.paises[index].copais) {
				posicion = index;
				break;
			}
		}
		return posicion;
	}

	$scope.grabar = function(departamento){
		var exito = function(respuesta){
			var objeto			= respuesta.data;
			$scope.descripcion_mensajes  = objeto.mensaje;
			var tipo			= (objeto.codigo == "200")?"success":"danger";
			divMessages.className = "alert alert-"+tipo+" alert-dismissable";
			var backuppais				= departamento.scpais;
			if(tipo == "success") {
				$scope.limpiar(departamento);
				$scope.consultar({scpais : backuppais}, objeto.mensaje);
			}
		}

		var error = function(respuesta){
			console.log(angular.toJson(respuesta));
		}
		
	    if(departamento.scpais == null) {
	    	$('#scpais').addClass("error");
	    }//End of condition...
	    else if(departamento.codepartamento == null) {
	    	$('#codepartamento').addClass("error");
	    }//End of condition...
	    else if(departamento.dsdepartamento == null) {
	    	$('#dsdepartamento').addClass("error");
	    }//End of condition...
	    else {
	    	var dsm_fhingreso				= new Date();
			var ism_fhingresom				= (dsm_fhingreso.getMonth()+1);
				ism_fhingresom 				= (ism_fhingresom <= 9)?"0"+ism_fhingresom:ism_fhingresom;
			var ism_fhingresod				= dsm_fhingreso.getDate();
				ism_fhingresod 				= (ism_fhingresod <= 9)?"0"+ism_fhingresod:ism_fhingresod;
			var ssm_fhingreso				= dsm_fhingreso.getFullYear()+"-"+ism_fhingresom+"-"+ism_fhingresod;

			var backuppais					= departamento.scpais;
			var inpais 						= $scope.buscarPais(departamento.scpais);
			departamento.cousuario 			= 1;
		    departamento.scpais 			= $scope.paises[inpais];
		    departamento.fhingreso			= ssm_fhingreso;
		    departamento.fhmodificacion 	= ssm_fhingreso;
		    
		    smartOlwServices.sendPut(
	    		angular.toJson(departamento),
	    		hostSmart+context+endPointDepartamento+methodSetDepartamento,exito,error
	    	);
			departamento.scpais 		= backuppais;
	    }
		
	}

	$scope.listarDepartamentos = function() {
		var backuppais				= $scope.departamento.scpais;
		$scope.consultar({scpais : backuppais});
	}
	
	$scope.eliminar = function(departamento){
		try{
			var exito = function(respuesta){
				var objeto			= respuesta.data;
				$scope.descripcion_mensajes  = objeto.mensaje;
				var tipo			= (objeto.codigo == "200")?"success":"danger";
				divMessages.className = "alert alert-"+tipo+" alert-dismissable";
				
				var backuppais				= departamento.scpais;
				
				if(tipo == "success") {
					$scope.limpiar(departamento);
					$scope.consultar({scpais : backuppais}, objeto.mensaje);
				}
				//alert(angular.toJson(respuesta.data));
			}

			var error = function(respuesta){
				console.log(angular.toJson(respuesta));
			}
			
			var backuppais				= departamento.scpais;
			var inpais 					= $scope.buscarPais(departamento.scpais);
			//departamento.cousuario 		= 1;
		    departamento.scpais 		= $scope.paises[inpais];
		    smartOlwServices.sendPut(angular.toJson(departamento),hostSmart+context+endPointDepartamento+methodRemoveDepartamento,exito,error);
			departamento.scpais 		= backuppais;
		}catch(e){
			console.log(e.message);
		}
	}
	
	$scope.seleccionar = function(editdepartamento){
		$scope.departamento 		= angular.copy(editdepartamento);
		$scope.departamento.scpais 	= $scope.departamento.scpais.copais;
	}
	
	$scope.limpiar = function(departamento){
		$scope.departamentos 		= [];
		departamento.scdepartamento = null;
		departamento.scpais 		= null;
		departamento.cousuario 		= 0;
		departamento.dsdepartamento	= "";
		departamento.codepartamento	= "";
		departamento.fhretiro		= "";
		departamento.fhmodificacion = "";
		departamento.fhingreso		= "";
	}
	
	*/
	
	var opcion = "C";
	var fhingreso = "";
	
	/**Metodo para la carga de paises en el combobox**/
	$scope.cargarPaises = function() {
		try{
			var exito 	= function(respuesta){
				try{
					var paises = angular.fromJson(respuesta.data);
					$scope.paises.push({dspais : 'Seleccionar' , copais : null});
					$.each(paises, function( index , pais ) {
						$scope.paises.push(pais);
				    });
				}catch(e){
					alert(e.message);
				}
			}

			var error = function(respuesta){
				$scope.titulo_mensajes = "Error!";
				$scope.descripcion_mensajes  = "Se produjo un error al momento de consultar la información de paises";
				divMessages.className = "alert alert-danger alert-dismissable";
				console.log(angular.toJson(respuesta));
			}
			smartOlwServices.sendGet(hostSmart+context+endPointPais+methodGetAllPais,exito,error);
		}catch(e){
			$scope.titulo_mensajes = "Error!";
			$scope.descripcion_mensajes  = "Se produjo un error al momento de consultar la información de paises";
			divMessages.className = "alert alert-danger alert-dismissable";
		}
	}
	
	/**Metodo para consultar departamento**/
	$scope.consultar = function(){
		var argumentos = arguments;
		try{
			var exito = function(respuesta){
				try{
					var objeto = respuesta.data;
					if (opcion == "G"){
						$scope.departamentos = angular.fromJson(objeto);
					}else{					
						$scope.titulo_mensajes = "Información!";
						$scope.descripcion_mensajes  = "Consulta de departamentos realizada con éxito";
						divMessages.className = "alert alert-info alert-dismissable";
						$scope.departamentos = angular.fromJson(objeto);
					}
					opcion = "C";
				}catch(e){
					console.log(e.message);
				}
			}

			var error = function(respuesta){
				$scope.titulo_mensajes 			= "Error!";
				$scope.descripcion_mensajes  	= "Se produjo un error al momento de consultar la información de paises";
				divMessages.className 			= "alert alert-danger alert-dismissable";
				console.log(angular.toJson(respuesta));
			}

			var departamento = new Object;
			departamento.scpais 		= $scope.mpais;

			smartOlwServices.sendPost(angular.toJson(departamento),hostSmart+context+endPointDepartamento+methodGetDepartamento,exito,error);
		}catch(e){
			$scope.titulo_mensajes = "Error!";
			$scope.descripcion_mensajes  = "Se produjo un error al momento de consultar la información de departamentos";
			divMessages.className = "alert alert-danger alert-dismissable";
		}
	}	

	/**Metodo para almacenar departamento**/
	$scope.grabar = function(){
		var argumentos = arguments;
		try{
			var exito = function(respuesta){
				if($scope.codepartamento == "" || $scope.codepartamento === undefined || $scope.dsdepartamento == "" || $scope.dsdepartamento === undefined){
					$scope.titulo_mensajes = "Advertencia!";
					$scope.descripcion_mensajes  = "El código y descripción son obligatorios";
					divMessages.className = "alert alert-danger alert-dismissable";
					return;
				}
				opcion = "G";
				$scope.titulo_mensajes = "Información!";
				$scope.descripcion_mensajes  = "Departamento almacenado con éxito";
				divMessages.className = "alert alert-info alert-dismissable";
				console.log(angular.toJson(respuesta));
				$scope.limpiar();
			}
	
			var error = function(respuesta){
				$scope.titulo_mensajes = "Error!";
				$scope.descripcion_mensajes  = "Ocurrio un error al almacenar el departamento";
				divMessages.className = "alert alert-danger alert-dismissable";
				console.log(angular.toJson(respuesta));
			}
			
	    	var departamento =  new Object;
		    departamento.scdepartamento = $scope.scdepartamento;			
	    	departamento.codepartamento = $scope.codepartamento;
			departamento.dsdepartamento = $scope.dsdepartamento;
		    departamento.scpais = $scope.mpais;
		        
		    smartOlwServices.sendPut(angular.toJson(departamento),hostSmart+context+endPointDepartamento+methodSetDepartamento,exito,error);
		}catch(e){
			$scope.titulo_mensajes = "Error!";
			$scope.descripcion_mensajes  = "Se produjo un error al momento de almacenar el departamento";
			divMessages.className = "alert alert-danger alert-dismissable";
		}
	}
	
	/**Selecciona un registro de departamento y lo coloca en los campos de edición**/
	$scope.seleccionar = function(editdepartamento){
		try{
			var departamento = angular.fromJson(editdepartamento);
		    $scope.scdepartamento = departamento.scdepartamento;			
	    	$scope.codepartamento = departamento.codepartamento;
			$scope.dsdepartamento = departamento.dsdepartamento;	
			fhingreso = departamento.fhingreso;
			$scope.titulo_mensajes = "Información!";
			$scope.descripcion_mensajes  = "Puede editar el departamento seleccionado";
			divMessages.className = "alert alert-info alert-dismissable";
		}catch(e){
			$scope.titulo_mensajes = "Error!";
			$scope.descripcion_mensajes  = "Se produjo un error al momento de seleccionar el departamento";
			divMessages.className = "alert alert-danger alert-dismissable";
		}
	}
	
	/**Método para limpiar la vista**/
	$scope.limpiar = function(){
		try{
		    $scope.scdepartamento = null;			
	    	$scope.codepartamento = "";
			$scope.dsdepartamento = "";	
			fhingreso = "";
			$scope.consultar();
		}catch(e){
			console.log(e.message);
		}
	}	
	
	/**Método para eliminar departamentos**/
	$scope.eliminar = function(departamento){
		try{
			var exito = function(respuesta){
				if($scope.scdepartamento == "" || $scope.scdepartamento === undefined || $scope.codepartamento == "" || $scope.codepartamento === undefined || $scope.dsdepartamento == "" || $scope.dsdepartamento === undefined){
					$scope.titulo_mensajes = "Advertencia!";
					$scope.descripcion_mensajes  = "Debe seleccionar un departamento para realizar esta operación";
					divMessages.className = "alert alert-danger alert-dismissable";
					return;
				}
				opcion = "G";
				$scope.titulo_mensajes = "Información!";
				$scope.descripcion_mensajes  = "Departamento eliminado con éxito";
				divMessages.className = "alert alert-info alert-dismissable";
				console.log(angular.toJson(respuesta.data));
				$scope.limpiar();
			}

			var error = function(respuesta){
				console.log(angular.toJson(respuesta));
			}
			
			var departamento =  new Object;
		    departamento.scdepartamento = $scope.scdepartamento;			
	    	departamento.codepartamento = $scope.codepartamento;
			departamento.dsdepartamento = $scope.dsdepartamento;
			departamento.fhingreso = fhingreso;
		    departamento.scpais = $scope.mpais;		    
		    
		    smartOlwServices.sendPut(angular.toJson(departamento),hostSmart+context+endPointDepartamento+methodRemoveDepartamento,exito,error);
		}catch(e){
			console.log(e.message);
		}
	}
	
	/**Carga incial del javascript**/
	$scope.cargarPaises();
});